]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
workspaceThumbnail: rebuild thumbnails if workareas size changed
authorMarco Trevisan (Treviño) <mail@3v1n0.net>
Fri, 19 Jan 2018 15:39:13 +0000 (16:39 +0100)
committerMarco Trevisan (Treviño) <mail@3v1n0.net>
Fri, 13 Apr 2018 21:58:28 +0000 (16:58 -0500)
https://bugzilla.gnome.org/show_bug.cgi?id=792687

js/ui/workspaceThumbnail.js

index 5565a1e410ee72603b8e3801578cd09c5d4c7bcb..3dffd12813610eefca0f8d8b9d2f23352a507cf6 100644 (file)
@@ -675,11 +675,7 @@ var ThumbnailsBox = new Lang.Class({
         this._settings.connect('changed::dynamic-workspaces',
             this._updateSwitcherVisibility.bind(this));
 
-        Main.layoutManager.connect('monitors-changed', () => {
-            this._destroyThumbnails();
-            if (Main.overview.visible)
-                this._createThumbnails();
-        });
+        Main.layoutManager.connect('monitors-changed', this._rebuildThumbnails.bind(this));
     },
 
     _updateSwitcherVisibility() {
@@ -872,6 +868,9 @@ var ThumbnailsBox = new Lang.Class({
             Main.overview.connect('windows-restacked',
                                   this._syncStacking.bind(this));
 
+        this._workareasChangedId =
+            global.screen.connect('workareas-changed', this._rebuildThumbnails.bind(this));
+
         this._targetScale = 0;
         this._scale = 0;
         this._pendingScaleUpdate = false;
@@ -901,12 +900,24 @@ var ThumbnailsBox = new Lang.Class({
             this._syncStackingId = 0;
         }
 
+        if (this._workareasChangedId > 0) {
+            global.screen.disconnect(this._workareasChangedId);
+            this._workareasChangedId = 0;
+        }
+
         for (let w = 0; w < this._thumbnails.length; w++)
             this._thumbnails[w].destroy();
         this._thumbnails = [];
         this._porthole = null;
     },
 
+    _rebuildThumbnails() {
+        this._destroyThumbnails();
+
+        if (Main.overview.visible)
+            this._createThumbnails();
+    },
+
     _workspacesChanged() {
         let validThumbnails =
             this._thumbnails.filter(t => t.state <= ThumbnailState.NORMAL);